package grafica;

import exceptions.ConexionException;
import exceptions.PersistenciaException;

import logica.Fachada;

public class ControladorMensajes
{
	private VentanaMensajes ventanaMensajes = null;
	
	public ControladorMensajes (VentanaMensajes ventana) throws PersistenciaException
	{
		this.ventanaMensajes = ventana;
		this.recibirMensajes();
	}
	
	public void recibirMensajes ()
	{
		/*
		 * Establezco un LOOP infinito que realiza las siguientes acciones:
		 * 1. Le pido a la fachada que reciba un mensaje dirigido a mí
		 * 2. Agrego el mensaje recibido al historial de mensajes mostrados en la VentanaMensajes
		 */
		new Thread() {
			public void run() {
				while (true) {
					String message;
					try {
						message = Fachada.getInstancia().recibirMensaje();
						ventanaMensajes.agregarMensaje(message);
					} catch (ConexionException e) {
						ventanaMensajes.mostrarError("Ocurrió un error grave: " + e.getMessage());
						System.exit(0);
					} catch (Exception e) {
						ventanaMensajes.mostrarError(e.getMessage());
					}
				}
			}
		}.start();
	}
}
